package com.titaniume.java;

import java.util.ArrayList;
import java.util.List;

/**
 *@program: JavaSenior
 *@description:
 *
 * 自定义泛型类
 *
 *@author: renfei.huang
 *@create: 2021-10-14 09:44
 */
public class Order<T> {

    String orderName;
    int orderId;


    //类的内部结构可以使用类的泛型
    T orderT;


    public Order() {

        //编译不通过
//        T [] arr= new T[10];

        //初始化一个数组
        T[] arr = (T[]) new Object[10];


    }


    public Order(String orderName, int orderId, T orderT) {
        this.orderName = orderName;
        this.orderId = orderId;
        this.orderT = orderT;
    }


    //如下的三个方法都不是泛型方法
    public T getOrderT() {
        return orderT;
    }

    public void setOrderT(T orderT) {
        this.orderT = orderT;
    }

    @Override
    public String toString() {
        return "Order{" +
                "orderName='" + orderName + '\'' +
                ", orderId=" + orderId +
                ", orderT=" + orderT +
                '}';
    }


    //静态方法中不能使用泛型  （静态方法早于对象的创建）
//    public static void show(T orderT){
//        System.out.println(orderT);
//    }


    public void show() {

        //编译不太被冠以
//        try {
//
//        }catch (T t){
//
//        }
    }

    //泛型方法： 方法中出现了泛型结构，泛型参数没有任何关系
    //换句话来说： 泛型方法所属的类是不是泛型都没有关系
    //泛型方法可以声明为静态的，原因,泛型参数是在调用方法时确定的，并非在实例化

    public static  <E> List<E> copyFromArrayToTis(E [] arr){

        ArrayList<E>  list= new ArrayList<>();
        for (E e: arr){
            list.add(e);
        }
        return  list;
    }


}